<?php

namespace app\controllers;

use app\models\User;
use Yii;
use yii\web\Controller;

class CorpWeiXinController extends Controller
{
    //局部解除CSRF验证 ，以使得程序能正常接收跨域ajax请求
    public $enableCsrfValidation = false;

    public function actionIndex()
    {
        echo 'Welcome to Shwto';
    }

    /**
     * 微信授权获取用户信息--登录页面
     */
    public function actionWithOauthCode()
    {
        //如果已经登录
        if(!Yii::$app->user->isGuest)
        {
            var_dump(Yii::$app->user->identity->cwx_name);
            echo '用户已经登录';
            return;
        }
        //如果未登录,则使用code拉取用户信息并登录程序
        /* @var $cwxTool \corpWeixin\corpWeixinSdk\CWXTool */
        $cwxTool = Yii::$app->cwx->CWXTool;
        $oAuthUrl = $cwxTool->getOauthUrl();
        $getDataOfWX = Yii::$app->request->get();
        if(!isset($getDataOfWX['code']))
        {
            $this->redirect($oAuthUrl);
        }else
        {
            $userInfo = Yii::$app->cwx->CWXUser->findUserByCode($getDataOfWX['code']);
            if($userInfo)
            {
                if(!$user = User::findOne(['cwx_userid'=>$userInfo['UserId']])) //新用户
                {
                    if($user = User::add($userInfo))
                    {
                        echo '创建用户成功!';
                    }else
                    {
                        echo '新用户创建失败';
                        return;
                    }
                }

                Yii::$app->user->login($user);
                echo '用户'.$user->cwx_name.'登录成功';
                echo "<div><img src='{$user->cwx_avatar}' alt=''></div>";
            }else
            {
                echo '微信授权登录过程失败';
            }
        }
    }

    /**
     * 微信用户被动回复消息页面（服务端）
     */
    public function actionCallBackPage()
    {
        $getDataOfWX = Yii::$app->request->get();
        $postDataOfWx = file_get_contents('php://input');

        /**
         * 初次配置微信消息回调URL校验
         */
        if (isset($getDataOfWX['echostr'])) //判断是否来自微信平台的请求
        {
            if ($replyEchoStr = Yii::$app->cwx->CWXCallBack->verifyUrl($getDataOfWX)) //校验微信端的get参数
            {
                echo $replyEchoStr; //校验通过后即输出解密后的echoStr
            } else {
                Yii::warning('(请求企业微信接收消息回调页面)$_GET参数校验错误'); //校验不通过记录日志
            }
            exit;
        }

        /**
         * 被动回复消息
         */
        if (isset($getDataOfWX['msg_signature'])) {
            //解密来自用户发给企业微信的消息
            if ($msg = Yii::$app->cwx->CWXCallBack->decryptMsg($getDataOfWX, $postDataOfWx)) {
                //如果是文件消息
                if($msg['MsgType']==='text')
                {
                    //Yii::warning('(请求企业微信接收消息回调页面)' . json_encode($msg));
                    if($msg = Yii::$app->cwx->CWXCallBack->encryptMsg($msg['ToUserName'],$msg['FromUserName'],'测试，这是来自企业号消息接口的自动回复'))
                    {
                        echo $msg;
                        return;
                    }
                    else
                    {
                        Yii::warning('(请求企业微信接收消息回调页面)自动回复消息失败');
                        return;
                    }
                }
            } else {
                Yii::warning('(请求企业微信接收消息回调页面)解密错误');
            }
            exit;
        }
        Yii::warning('(请求企业微信接收消息回调页面)参数不是微信端的合法参数');  //非法请求记录日志
    }

    public function actionSendMsg()
    {
        $msgType = 'text';
        $msgBody = ['content'=>"<a href=\"http://work.weixin.qq.com\">testetstetesttest</a>"];
//        $msgType = 'image';
//        $msgBody = ['media_id'=>"3Ac6VYjKvz_6usY_TZo_5Bw70CEGmWujAP_0bMqjbuG5rH0klF8vkyioSCL8GuitF"];
//        $msgType = 'textcard';
//        $msgBody = [
//            'title'=>"通知（测试）",
//            'description'=>"<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台，领奖码：xxxx</div><div class=\"highlight\">请于2016年10月10日前联系行政同事领取</div>",
//            'url'=>"http://www.shwto.com",
//            'btntxt'=>"更多",
//        ];
//        $msgType = 'news';
//        $msgBody =[
//            'articles'=>[
//                [
//                    'title'=>"图文消息（测试）",
//                    'description'=>"今年中秋节公司有豪礼相送",
//                    'picurl'=>"http://www.123myl.com.cn/image/catalog/NF/QF/1-QF-400g-1Duan/2.jpg",
//                    'url'=>"http://www.123myl.com.cn/",
//                    'btntxt'=>"更多",
//                ],
//                [
//                    'title'=>"图文消息（测试）",
//                    'description'=>"今年中秋节公司有豪礼相送",
//                    'picurl'=>"http://www.123myl.com.cn/image/catalog/NF/QF/1-QF-400g-1Duan/2.jpg",
//                    'url'=>"http://www.123myl.com.cn/",
//                    'btntxt'=>"更多",
//                ],
//                [
//                    'title'=>"图文消息（测试）",
//                    'description'=>"今年中秋节公司有豪礼相送",
//                    'picurl'=>"http://www.123myl.com.cn/image/catalog/NF/QF/1-QF-400g-1Duan/2.jpg",
//                    'url'=>"http://www.123myl.com.cn/",
//                    'btntxt'=>"更多",
//                ]
//            ]
//        ];
        //3XW4ILEaQ5XBg0F85ZAXQcpWuXF5y7_zu8byAvhilNcjs-SHyQod_ZjfyLdIgxjVZ
//        $msgType = 'file';
//        $msgBody =['media_id'=>"301CE6enyrekIca5o88AJYgUEEXAXKkpDiZbh2EH4CgyT97lwkUScdFFE1Zi4gtDm"];
        $toUsers = ['qy01bcb1346c4cf0289b5c726d06'];
        $res = Yii::$app->cwx->CWXMessage->send($msgBody,$msgType,$toUsers);
        var_dump($res);
    }

    public function actionAddMedia()
    {
//        $res = $cwx->addMaterial('C:/Users/sh01/Pictures/test.jpg','image');
        $file = 'C:/Users/sh01/Documents/Tencent Files/2580166034/FileRecv/车辆表及统计.docx';
        $file = iconv('UTF-8', 'GBK', $file);
        $res = Yii::$app->cwx->CWXMedia->add($file,'file');
        var_dump($res);
    }

    public function actionGetDepartment()
    {
//        $res = CWXDepartment::findTree();
        $res = Yii::$app->cwx->CWXDepartment->findTree(4);
        var_dump($res);
    }


}
